<?php

function sql_encoder_requete($p_texte) {
	$nettoyage = $p_texte;
	$nettoyage = str_replace(chr(146), "'", $p_texte);
	$nettoyage = str_replace(chr(145), "'", $nettoyage);
	if (strpos($p_texte, "\'") === false)
	$nettoyage = str_replace("'", "\'", $nettoyage);
	return $nettoyage;
}
 
function sql_encoder_affichage($p_texte) {
	$nettoyage = $p_texte;
	$nettoyage = htmlentities($nettoyage, ENT_COMPAT, "UTF-8");
	$nettoyage = str_replace(chr(13), "<br />", $nettoyage);
	$nettoyage = str_replace(chr(10), "<br />", $nettoyage);
	$nettoyage = str_replace("<br /><br />", "<br />", $nettoyage);
	return $nettoyage;
}

// **********
// Gestion des erreurs

function sql_erreur($p_erreur, $p_message) {
   $return = sprintf("<b>Erreur SQL (%s)</b><br />", $p_erreur);
   $return .= sprintf("Requete : [%s]<br />", $p_message);
   $return .= sprintf("Message : [%s]<br />", mysql_error());
    
    return $return;
}

// **********
// Ouverture de la connexion a la base de donn�e

function sql_connecter() {

	global $db_hote, $db_utilisateur, $db_motdepasse, $db_defaut;

	$erreur = FALSE;
	$basedonnees = func_num_args() == 0 ? $db_defaut : func_get_arg(0);
	if ($connexion = mysql_connect($db_hote, $db_utilisateur, $db_motdepasse)) {
		if (mysql_select_db($basedonnees)){
			mysql_query("SET NAMES UTF8");
			return $connexion;
		}
		else
		return sql_erreur(2, "Choix de la base");
	}
	else
	return sql_erreur(1, "Connexion a la source de donnees");

}



// **********
// Fermeture de la connexion a la base de donnee WallisDB

function sql_fermer($p_connexion) {

	if (mysql_close($p_connexion))
	return TRUE;
	else
	return sql_erreur(3, "Fermeture a la source de donnees");

}



// **********
// Execution d'une requete

function sql_executer($p_connexion, $p_requete) {
	mysql_query("SET NAMES UTF8");
	if ($resultat = mysql_query($p_requete, $p_connexion))
	return $resultat;
	else
	return sql_erreur(4, $p_requete);
}



// **********
// Lecture d'une ligne de resultat sous la forme d'un objet

function sql_lire_ligne_objet($p_resultat){

	return  mysql_fetch_object($p_resultat);

}

// **********
// Lecture d'une ligne de resultat sous la forme d'un tableau

function sql_lire_ligne_tableau($p_resultat){

	return  mysql_fetch_array($p_resultat);

}

// **********
// Nombre de lignes du résultat

function sql_nombre_lignes($p_resultat){

	return mysql_num_rows($p_resultat);

}


/**
 * 
 * @param $p_resultat res
 */
function sql_liberer_resultat($p_resultat){
	return mysql_free_result($p_resultat);
}

// **********
// Insertion d'un indice
function sql_ajouter_indice($p_connexion, $p_table) {

	$requete  = " lock tables _index read";
	sql_executer($p_connexion, $requete);

	$requete  = " lock tables _index write";
	sql_executer($p_connexion, $requete);

	$requete  = " select index_max from _index where nom_table = '$p_table'";
	$resultat = sql_executer($p_connexion, $requete);
	$ligne = sql_lire_ligne_objet($resultat);
	$id = $ligne->index_max;

	$requete  = " update _index set index_max = index_max + 1 where nom_table = '$p_table'";
	sql_executer($p_connexion, $requete);
	$requete  = " unlock tables";
	sql_executer($p_connexion, $requete);

	return $id;

}



?>